﻿using System.Collections.Generic;

namespace Hover.Core.Utils {

	/*================================================================================================*/
	public interface ISettingsControllerMap {


		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		void Set(string pValueName, ISettingsController pController, int pExpirationCount=1);

		/*--------------------------------------------------------------------------------------------*/
		bool Unset(string pValueName, ISettingsController pController);
		
		/*--------------------------------------------------------------------------------------------*/
		void TryExpireControllers();


#if UNITY_EDITOR
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		ISettingsController Get(string pValueName);

		/*--------------------------------------------------------------------------------------------*/
		bool IsControlled(string pValueName);

		/*--------------------------------------------------------------------------------------------*/
		bool AreAnyControlled();

		/*--------------------------------------------------------------------------------------------*/
		int GetControlledCount(bool pSpecialsOnly=false);


		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		List<string> GetNewListOfControlledValueNames(bool pSpecialsOnly=false);

		/*--------------------------------------------------------------------------------------------*/
		void FillListWithControlledValueNames(List<string> pList, bool pSpecialsOnly=false);
#endif

	}

}
